<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script>
		/**
		 * js的同步是顺序执行，形成一个执行栈
		 * js异步是通过回调函数实现的：
		 * 		1. 普通事件，如 click，resize等
		 * 		2. 资源加载，如load、error等
		 * 		3. 定时器，包括setInterval, setTimeout等
		 * */

		/**
		 * js执行机制
		 * 	1. 先执行执行栈中的同步任务
		 * 	2. 异步任务（回调函数）放到任务队列（消息队列）中
		 * 	3. 执行栈中的同步任务执行完毕后，系统会按次序读取任务队列中的异步任务，
		 * 		然后被读取的异步任务进入执行栈开始执行
		 * */
		// console.log(1);
		// setTimeout(function() {
		// 	console.log(4);
		// }, 2000)
		// setTimeout(function() {
		// 	console.log(3);
		// }, 1000)
		// console.log(2);
		
		var a = 1;
		var b = 2;
		
		function sum(a,b){
			return a+b;
		}
		
		console.log("我是执行栈里的第1个任务");
		new Promise((resolve,reject)=>{
			if(a == 1){
				resolve();
			}else if(a == 2){
				reject();
			}
		}).then(data=>{
			console.log("resolve:",sum(2,4));
		}).catch(err=>{
			console.log("err");
		});
		
		
	</script>
</html>
